A computer system may have a number of input/output (I/O) devices including video displays, speakers, printers, keyboards, pointing devices, and various ports including serial, parallel and network ports. The processor of the system typically communicates with the I/O devices via one or more peripheral busses which transmit control, address and data bits. One such bus frequently used is the Peripheral Component Interconnect, a local bus standard developed by Intel Corporation. There are other bus standards.
An I/O device is usually connected to the computer system bus using another I/O device referred to as an I/O controller or adapter, which facilitates communication between the system processor and another I/O device. For example, a video adapter for a video display device, typically includes memory to temporarily store display information, logic to process display information and interface circuitry to transfer information between the bus and the adapter and between the adapter and the video display. Other examples of I/O controllers for I/O devices include sound adapters, storage controllers, network controllers etc.
Some I/O controllers may include one or more integrated circuit chips which may be soldered or otherwise connected to a main circuit board such as a motherboard. Other I/O controllers may be carried on one or more expansion boards or cards, each of which has a number of connectors which are received in a connector socket often referred to as an expansion slot. The connector sockets are typically mounted on the main circuit board or motherboard.
The expansion slots are typically housed within the same chassis which houses or supports the main processor board of the computer system. However, additional expansion slots may be provided in an auxiliary chassis external to the main chassis. The peripheral bus of the expansion slots of the auxiliary chassis may extend between the main chassis and the auxiliary chassis and be coupled to the peripheral bus of the main chassis using a bus-to-bus bridge.
To ensure compatibility of a particular I/O controller with a particular computer system, the manufacturer of the I/O controller typically purchases or otherwise acquires use of the particular computer system and plugs the I/O device into an expansion slot of the particular computer or otherwise connects the I/O device to the motherboard of the computer system. To ensure wide compatibility, an I/O device controller manufacturer may obtain physical access to many different computer systems and physically attach the I/O device controller to each one in turn and test it. Conversely, a computer system manufacturer may purchase or otherwise acquire use of a wide range of I/O device controllers on the market and physically install each one in turn into its computer system to ensure adequate compatibility with those devices.
When a computer system is first turned on or restarted, the system processor which may include one or more central processing units (CPUs), initializes itself. In this initialization, the system processor looks up its first instruction in a startup program which is typically stored in non-volatile memory such as a read-only-memory (ROM). The startup program, among other tasks, typically takes an inventory of the various busses and the I/O devices coupled to the busses and checks the status of the devices to determine if the devices are working properly. Once the system processor has been initialized, an operating system is typically loaded from storage such as a hard drive in a boot sequence. The storage which contains a boot record which indicates to the system processor where to find the beginning of the operating system and the subsequent program file to initialize the operating system, is often referred to as the boot drive.
Upon initialization of the operating system, files of the operating system are copied into memory and the operating system typically takes over control of the boot process. At this point, the operating system often performs another inventory including an inventory of the I/O devices coupled to the bus and loads the appropriate drivers to control the I/O devices. The operating system may reserve portions of the system memory for use by the inventoried I/O devices.
Among the controllers which may be coupled to the bus, is an “out-of-band” controller which can operate independently of the system processor and the operating system controlling the system processor. The out-of-band controller may provide another user such as an administrator access to some of the computer system resources. For example, some servers and other computer systems may have a system management interrupt (SMI) which interrupts the operation of the system processor. Upon recognition of an SMI, the system processor may enter a system management mode in which information such as processor state information may be saved and other diagnostic operations may be performed. Some out-of-band controllers permit an administrator connected to the out-of-band controller by a network or other connection to assert an SMI to cause the system processor to enter a system management mode and permit the controller to forward information to the administrator.